/**
*Proyecto: Autopista V.1
*EmpresaServiceImpl.java
*Fecha Creacion: 27 Junio del 2013
*SWITZ Software Artists Derechos Reservados R
*/
package mx.com.switz.autopista.service.impl;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpSession;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import mx.com.switz.autopista.dao.EmpresaDao;
import mx.com.switz.autopista.dao.UsuarioDao;
import mx.com.switz.autopista.dto.Empresa;
import mx.com.switz.autopista.dto.Usuario;
import mx.com.switz.autopista.exception.AutopistaException;
import mx.com.switz.autopista.service.EmpresaService;
/*
*Clase que contiene los metodos de la empresa con la implementacion
*@Autor: Jovani Arzate Cabrera SWITZ Software Artists
 */
@Service
public class EmpresaServiceImpl implements EmpresaService{

	@Autowired
	EmpresaDao empresaDao;
	
	@Autowired
	UsuarioDao usuarioDao;
	/**
	 * @see mx.com.switz.autopista.EmpresaService.addEmpresa(mx.com.switz.autopista.dto.Empresa)
	 */
	@Transactional
	public boolean addEmpresa(Empresa empresa,Usuario usuario) throws AutopistaException {
		
		try{

			if(empresaDao.existEmpresa(empresa)){
				return false;
			}
			else{
				Number key=empresaDao.insertEmpresa(empresa);
			
				usuarioDao.insertUsuario(usuario);
				empresaDao.insertEmpresaUsuario(key,usuario.getId_usuario());
				usuarioDao.insertUsuarioRol(usuario.getId_usuario(),2);
				return true;	
			}
			
		}catch(AutopistaException ae){
		throw new AutopistaException("Error en la insercion"+ae.getMessage());
		}
	}
	/**
	 * @see mx.com.switz.autopista.EmpresaService.editEmpresa(mx.com.switz.autopista.dto.Empresa)
	 */
	public boolean editEmpresa(Empresa empresa) throws AutopistaException {
		
		return empresaDao.updateEmpresa(empresa);
	}
	/**
	 * @see mx.com.switz.autopista.EmpresaService.count()
	 */
	public int count() throws AutopistaException {
		
		return empresaDao.count();
	}
	/**
	 * @see mx.com.switz.autopista.EmpresaService.existEmpresa(mx.com.switz.autopista.dto.Empresa)
	 */
	public boolean existEmpresa(Empresa empresa) throws AutopistaException {
		
		return empresaDao.existEmpresa(empresa);
	}
	/**
	 * @see mx.com.switz.autopista.EmpresaService.addtEmpresaUsuario()
	 */
	public boolean addtEmpresaUsuario(Number empresa, String usuario)throws AutopistaException {
		
		return empresaDao.insertEmpresaUsuario(empresa, usuario);
	}
	/**
	 * @see mx.com.switz.autopista.EmpresaService.addtUsuarioRol()
	 */
	public boolean addtUsuarioRol(String id_usuario, int rol)throws AutopistaException {
		
		return usuarioDao.insertUsuarioRol(id_usuario, rol);
	}
	
}
